﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Castle.ActiveRecord;

namespace Matriculex.Dominio
{
    [ActiveRecord("aluno_fechado"), Serializable]
    public class AlunoFechado : Aluno
    {
        // construtor vazio necessário para o ActiveRecord
        protected AlunoFechado() { }

        public AlunoFechado(string numeroPECE, string nome, string email, CursoFechado curso)
            : base(numeroPECE, nome, email)
        {
            this.Curso = curso;
        }

        [JoinedKey]
        public override int Id { get { return base.Id; } }
        [BelongsTo]
        public CursoFechado Curso { get; set; }
        [HasMany]
        public IList<Rematricula> Rematriculas { get; set; }

        public override Curso GetCurso()
        {
            return Curso;
        }

        # region Métodos estáticos do ActiveRecord
        public new static void DeleteAll()
        {
            DeleteAll(typeof(AlunoFechado));
        }

        public new static AlunoFechado[] FindAll()
        {
            return (AlunoFechado[])FindAllByProperty(typeof(AlunoFechado),"Ativado", true);
        }

        public new static AlunoFechado Find(int id)
        {
            return (AlunoFechado)FindByPrimaryKey(typeof(AlunoFechado), id);
        }
        #endregion
    }
}
